package Jastermind;

import java.awt.Color;
import java.util.ArrayList;

public class Attempt {

    private Game game;
    private ArrayList<Color> combinaisonPlayed;
    private boolean isAttemptWinner;

    public Attempt(Game game, ArrayList<Color> combinaisonPlayed) {
        this.game = game;
        this.combinaisonPlayed = combinaisonPlayed;
        this.isAttemptWinner=false;
    }

    public boolean isIsAttemptWinner() {
        return isAttemptWinner;
    }
    
    public ArrayList<Color> getAttemptResult() {
        int countBienPlace = 0;
        int countMalPlace = 0;
        ArrayList<Color> resultList=new ArrayList<Color>();
        ArrayList<Color> combinaisonGameView = new ArrayList<Color>(game.getCombinaison());
        ArrayList<Color> combinaisonPlayedView = new ArrayList<Color>(combinaisonPlayed);

        //Les couleurs bien placé
        for (int iColor = 0; iColor < combinaisonPlayedView.size(); iColor++) {
            if (combinaisonPlayedView.get(iColor) != null) {
                if (combinaisonPlayedView.get(iColor).equals(combinaisonGameView.get(iColor))) {
                    combinaisonGameView.set(iColor, null);
                    combinaisonPlayedView.set(iColor, null);
                    countBienPlace++;
                }
            }
        }
        //Les couleurs mal placé
        for (int iColor = 0; iColor < combinaisonPlayedView.size(); iColor++) {
            if (combinaisonPlayedView.get(iColor) != null) {
                if (combinaisonGameView.contains(combinaisonPlayedView.get(iColor))) {
                    combinaisonGameView.set(combinaisonGameView.indexOf(combinaisonPlayedView.get(iColor)),null);
                    combinaisonPlayedView.set(iColor, null);
                    countMalPlace++;
                }
            }
        }
        if(countBienPlace==game.getPlayer().getCombinaisonSize()){
            isAttemptWinner=true;
        }
        //On place les couleurs bien placé dans la collection
        for(int iColor=0;iColor<countBienPlace;iColor++){
            resultList.add(game.getPlayer().getBienPlace());
        }
        //On place les couleurs mal placé dans la collection
        for(int iColor=0;iColor<countMalPlace;iColor++){
            resultList.add(game.getPlayer().getMalPlace());
        }
        //On place le reste
        for(int iColor=0;iColor<game.getCombinaison().size()-(countMalPlace+countBienPlace);iColor++){
            resultList.add(null);
        }
        return resultList;
    }
}

